package cn.edu.zhku.service;

import cn.edu.zhku.dto.TaskDto;
import cn.edu.zhku.dto.UserDto;
import cn.edu.zhku.pojo.Group;
import cn.edu.zhku.pojo.Task;
import cn.edu.zhku.pojo.User;

import java.util.Date;
import java.util.List;

public interface GroupService {

    void addOne(Group group);

    void addOne2UserGroup(Integer userId, String inviteCode, Date joinTime);

    void modifyOne(Group group);

    void removeGroupBatch(List<Integer> groupIds);

    void removeUserBatch(Integer groupId, List<Integer> userIds);

    void removeTaskBatch(Integer groupId, List<Integer> taskIds);

    Group findById(Integer groupId);

    boolean checkGroupExistByGroupIdBatch(List<Integer> groupIds);

    Group findByInviteCode(String inviteCode);

    boolean checkGroupExistByStuIdAndInviteCode(Integer userId, String inviteCode);

    boolean checkGroupUserExistByGroupIdAndUserIdBatch(Integer groupId, List<Integer> userIds);

    boolean checkGroupTaskExistByGroupIdAndTaskIdBatch(Integer groupId, List<Integer> taskIds);

    List<Group> findGroupTea(Group group);

    List<Group> findGroupStu(Group group);

    List<User> findGroupUser(UserDto userDto);

    List<Task> findGroupTaskTea(TaskDto taskDto);

    List<Task> findGroupTaskStu(TaskDto taskDto);

    Integer getGroupUserNumByGroupId(Integer groupId);

    Integer getGroupTaskNumByGroupId(Integer groupId);

    Integer getGroupTaskFormNumByGroupIdAndTaskId(Integer groupId, Integer taskId);
}
